//index.js
const app = getApp()
const db = wx.cloud.database() // 调用默认云环境的数据库引用

Page({
  data: {
    images: [], // 选择的图片列表
    images_success: [], // 上传云存储后的云存储地址数组
    images_success_size: 0, // 图片上传成功的数量
    title: '' // 标题，可以通过 bindinput 绑定输入框的值
  },

  onLoad() {
    // 初始加载
  },
  
  inputTitle: function (e) {
    this.setData({
      title: e.detail.value
    });
  },
  
  upload() {
    let that = this;
    wx.chooseImage({
      count: 9, // 最多选择图片数量
      sizeType: ['original', 'compressed'], // 选择的图片尺寸 原图，压缩图
      sourceType: ['album', 'camera'], // 相册选图，相机拍照
      success(res) {
        // 加入到图片列表
        that.setData({
          images: res.tempFilePaths
        });
        console.log("选择成功", res)
      }
    })
  },

  checkTitleExists(callback) {
    let that = this;
    db.collection('exam-paper-img').where({
      title: that.data.title
    }).count().then(res => {
      if (res.total > 0) {
        // 标题已经存在
        wx.showToast({
          icon: 'none',
          title: '该名称的试卷已经有人上传咯，请更换标题',
          duration: 3500 // 设置提示信息显示时间为 3.5 秒钟
        });
        callback(false); // 不继续上传
      } else {
        // 标题不存在
        callback(true); // 继续上传
      }
    }).catch(err => {
      console.error("标题检查失败", err);
      wx.showToast({
        icon: 'none',
        title: '检查标题失败，请稍后重试',
      });
      callback(false); // 不继续上传
    });
  },

  uploadImage(index) {
    let that = this;
    wx.showLoading({
      title: '别急，你先别急',
      mask: true
    });

    wx.cloud.uploadFile({
      cloudPath: `examination-paper/${this.data.title}/${new Date().getTime()}_${Math.floor(Math.random() * 1000)}.png`, // 使用模板字符串拼接
      filePath: that.data.images[index], // 本地文件路径
    })
    .then(res => {
      // 返回文件 ID
      console.log("上传成功", res.fileID);
      // 将当前图片的 fileID 存入数组
      that.data.images_success[index] = res.fileID;

      // 每次上传成功后，将当前图片的信息存入数据库
      db.collection('exam-paper-img').add({
        data: {
          title: that.data.title || '无标题', // 使用标题输入框中的值或一个默认标题
          image: res.fileID, // 存储当前上传图片的 fileID
          approved: false // 初始状态为未审核
        }
      }).then(dbRes => {
        console.log("数据库插入成功", dbRes);
      }).catch(dbErr => {
        console.error("数据库插入失败", dbErr);
      });

      // 检查是否所有图片都上传成功
      if (index + 1 === that.data.images.length) {
        // 最后一张图片上传成功
        wx.hideLoading();
        wx.showToast({
          title: '全部上传成功',
          icon: 'success',
          duration: 2000,
          success: () => {
            // 清空输入框和图片选择
            that.setData({
              images: [],
              title: '' // 清空标题输入框
            });
          }
        });
      } else {
        // 继续上传下一张图片
        that.uploadImage(index + 1);
      }
    })
    .catch(err => {
      that.setData({
        images_success: [],
        images_success_size: 0
      });
      wx.showToast({
        icon: 'none',
        title: '上传失败，请重新上传',
      });
      wx.hideLoading();
    });
  },
  
  addBtn: function (e) {
    let that = this;
    if (that.data.images.length > 0) { // 1、判断是否有图片
      // 先检查标题是否已存在
      that.checkTitleExists((canUpload) => {
        if (canUpload) {
          that.setData({
            images_success: [] // 重置 images_success 数组
          });
          that.uploadImage(0); // 2、有图片时先上传第一张
        }
      });
    } else {
      wx.showToast({
        icon: 'none',
        title: '请先选择图片',
      });
    }
  },

  inputTitle: function (e) {
    this.setData({
      title: e.detail.value
    });
  },

  // 新增：图片预览功能
  previewImage(e) {
    const current = e.currentTarget.dataset.src; // 获取当前点击的图片路径
    wx.previewImage({
      current: current, // 当前显示图片的http链接
      urls: this.data.images // 需要预览的图片http链接列表
    });
  }
})
